/**
 * Created by yudong on 2017/6/15 0015.
 *
 在处理特殊值的情况下，乘法操作符遵循下列特殊的规则：
  如果操作数都是数值，执行常规的乘法计算，即两个正数或两个负数相乘的结果还是正数，而如果只有一个操作数有符号，那么结果就是负数。
 如果乘积超过了 ECMAScript 数值的表示范围，则返回 Infinity 或-Infinity；
  如果有一个操作数是 NaN，则结果是 NaN；
  如果是 Infinity 与 0 相乘，则结果是 NaN；
  如果是 Infinity 与非 0 数值相乘，则结果是 Infinity 或-Infinity，取决于有符号操作数的符号；
  如果是 Infinity 与 Infinity 相乘，则结果是 Infinity；
  如果有一个操作数不是数值，则在后台调用 Number() 将其转换为数值，然后再应用上面的规则。

 与乘法操作符类似，除法操作符对特殊的值也有特殊的处理规则。这些规则如下：
  如果操作数都是数值，执行常规的除法计算，即两个正数或两个负数相除的结果还是正数，而如果只有一个操作数有符号，那么结果就是负数。
 如果商超过了 ECMAScript 数值的表示范围，则返回 Infinity 或-Infinity；
  如果有一个操作数是 NaN，则结果是 NaN；
  如果是 Infinity 被 Infinity 除，则结果是 NaN；
  如果是零被零除，则结果是 NaN；
  如果是非零的有限数被零除，则结果是 Infinity 或-Infinity，取决于有符号操作数的符号；
  如果是 Infinity 被任何非零数值除，则结果是 Infinity 或-Infinity，取决于有符号操作数的符号；
  如果有一个操作数不是数值，则在后台调用 Number() 将其转换为数值，然后再应用上面的规则。

 求模（余数）操作符由一个百分号（ %）表示，用法如下：
 var result = 26 % 5; // 等于 1
 与另外两个乘性操作符类似，求模操作符会遵循下列特殊规则来处理特殊的值：
  如果操作数都是数值，执行常规的除法计算，返回除得的余数；
  如果被除数是无穷大值而除数是有限大的数值，则结果是 NaN；
  如果被除数是有限大的数值而除数是零，则结果是 NaN；
  如果是 Infinity 被 Infinity 除，则结果是 NaN；
  如果被除数是有限大的数值而除数是无穷大的数值，则结果是被除数；
  如果被除数是零，则结果是零；
  如果有一个操作数不是数值，则在后台调用 Number() 将其转换为数值，然后再应用上面的规则。

 加法操作符（ +）的用法如下所示：
 var result = 1 + 2;
 如果两个操作符都是数值，执行常规的加法计算，然后根据下列规则返回结果：
  如果有一个操作数是 NaN，则结果是 NaN；
  如果是 Infinity 加 Infinity，则结果是 Infinity；
  如果是-Infinity 加-Infinity，则结果是-Infinity；
  如果是 Infinity 加-Infinity，则结果是 NaN；
  如果是+0 加+0，则结果是+0；
  如果是0 加0，则结果是0；
  如果是+0 加0，则结果是+0。
 不过，如果有一个操作数是字符串，那么就要应用如下规则：
  如果两个操作数都是字符串，则将第二个操作数与第一个操作数拼接起来；
  如果只有一个操作数是字符串，则将另一个操作数转换为字符串，然后再将两个字符串拼接起来。如果有一个操作数是对象、数值或布尔值，
 则调用它们的 toString() 方法取得相应的字符串值，然后再应用前面关于字符串的规则。对于 undefined 和 null，则分别调用 String()
 函数并取得字符串"undefined" 和"null" 。

 与加法操作符类似， ECMAScript 中的减法操作符在处理各种数据类型转换时，同样需要遵循一些特殊规则，如下所示：
  如果两个操作符都是数值，则执行常规的算术减法操作并返回结果；
  如果有一个操作数是 NaN，则结果是 NaN；
  如果是 Infinity 减 Infinity，则结果是 NaN；
  如果是-Infinity 减-Infinity，则结果是 NaN；
  如果是 Infinity 减-Infinity，则结果是 Infinity；
  如果是-Infinity 减 Infinity，则结果是-Infinity；
  如果是+0 减+0，则结果是+0；
  如果是+0 减-0，则结果是-0；
  如果是-0 减-0，则结果是-0；
  如果有一个操作数是字符串、布尔值、 null 或 undefined，则先在后台调用 Number() 函数将其转换为数值，然后再根据前面的规则执行
 减法计算。如果转换的结果是 NaN，则减法的结果就是 NaN；
  如果有一个操作数是对象，则调用对象的 valueOf() 方法以取得表示该对象的数值。如果得到的值是 NaN，则减法的结果就是 NaN。如果对
 象没有 valueOf() 方法，则调用其 toString()方法并将得到的字符串转换为数值。
 */
